#ifndef BLOQUESLIBRES_H_
#define BLOQUESLIBRES_H_

#include "Key.h"
#include <iostream>
#include <fstream>
#include <cstring>
#include <iterator>
#include <algorithm>
#include <vector>

using namespace std;

class BloquesLibres{

private:

	std::vector<unsigned int> bloqueslibres; //vector de bloqueslibres
	string nombrearchivo;

public:

	/*
	* Crea la el vector y el archivo
	* */
	BloquesLibres(string nombrearchivo);
	
	virtual ~BloquesLibres();

    unsigned int obtenerBloqueLibre(unsigned int pos);

    /*
     * Devuelve el ultimo elemento (nro de bloque) y lo elimina
     * */
    int obteneBloque();

    /*
     * Inserta al final el elemento (nro de bloque)
     * */
    void insertarBloque(unsigned int nrobloque);

    /*
     * Guarda en el archivo con el nombre nombrearchivo los bloques libres
     * */
    void guardarBloques();

    /*
     * Devuelve true si no contiene bloques libres, false en caso contrario
     * */
    bool vacio();

    /*
     * Muestra el listado de bloques libres
     * */
    void mostrar();

};

#endif 
